// Copyright (c) 2012 NetPipe
// All Rights Reserved.

/**
 * @file Rule.h
 * 规则配置
 * @author fanpc
 * @date 2012/07/25
 * @version 1.0
 * @note Create
 * Date		     Ver	     Name	   Description
 * 20120725		 1.1.0		 fanpc	   create
 */

#ifndef NP_CONFIG_RULE_H
#define NP_CONFIG_RULE_H
#include "Structures.h"
#include "XmlConfBase.h"
#include <map>

class Rule : public XmlConfBase
{
public:
  Rule();
  Rule(const std::string& fileName);
  ~Rule();

  void setNoToBeDesstroy() { m_toBeDestroy = false; }

  /**
      * 根据传入的规则名称，获取该条目规则信息
      * @param RegexName 规则名字
      * @param 返回规则结构体指针
      */
  ruleconfiguration::RegexInfo* getRegex(const std::string& RegexName);

private:
  void reset();
  void todo(const pugi::xml_document &pugixml);

  /**
    * 读取配置文件时用于填充规则结构体信息
    * @param node
    * @param regexInfo 输出参数
    */
  void fillInfo(const pugi::xml_node& node, ruleconfiguration::RegexInfo& regexInfo);

private:
  ruleconfiguration::RuleConfigInfo m_rule; /*<读取系统内一个规则文件>*/

  bool m_toBeDestroy;

};

#endif // NP_CONFIG_RULE_H
